<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 直接创建了一个小明对象，复用性不高
        // let xiaoming = {
        //     name:"小明",
        //     callGirlFriend(){
        //         console.log("把大象装进冰箱");
        //     }
        // }

        // 能不能来个工厂制造小明s
        // 人类工厂---》制造人
        // function Person(name){
        //     let obj = {
        //         name,
        //         callGirlFriend(){
        //             console.log("把大象装进冰箱");
        //         }
        //     }
        //     return obj;
        // }
        // // 制造小明
        // let xiaoming = Person("小明");
        // let xiaozhang = Person("小张");
        // let xiaoli = Person("小李");
        // console.log(xiaoming,xiaozhang,xiaoli)


        // 狗类工厂:拥有一些狗对象的共同特征
        // 提取（抽象）了一些狗的共同特征，封装起来了。提高了复用性；
        function Dog(name){
            let obj = {};  // 放入原料
            obj.name = name ;      // 加工原料
            obj.wow = function(){
                console.log("汪汪汪...");
            }
            // 出厂
            return obj;
        }

        let dahuang = Dog("大黄");
        let xiaohei = Dog("小黑");
        console.log(dahuang.wow===xiaohei.wow);

        // 总结 ：工厂模式 提高了复用性 ，解决了对象的复用问题。但是面向对象编程的时候比较少使用工厂模式
        // 因为工程模式有缺点 ？1.不能解决对象的识别问题 
        // 2.性能问题 ：每个工厂生产出来的对象都需要占用内存；
        // 如何解决？？




    </script>
</body>
</html>